package br.ufc.quixada.model.DAO;

import javax.persistence.PersistenceException;
import javax.persistence.Query;

import br.ufc.quixada.exceptions.ErroLoginException;
import br.ufc.quixada.model.entidades.Usuario;
import br.ufc.quixada.model.interfaces.UsuarioDAO;

public class UsuarioJDAO extends GenericJDAO<Usuario> implements UsuarioDAO {

	public UsuarioJDAO(){
		persistenceClass = Usuario.class;
	}

	@Override
	public Usuario loginUsuario(Usuario usuario) {
		
		String sql = "select u from Usuario u where u.email = :email and u.senha = :senha";

		Query query = em.createQuery(sql);
		query.setParameter("email", usuario.getEmail());
		query.setParameter("senha", usuario.getSenha());
		
		System.out.println(usuario.getEmail() + usuario.getSenha());
		
		try {
			Usuario userConsulta = (Usuario) query.getSingleResult();
			if(userConsulta == null){
				return null;
			}else{
				return userConsulta;
			}
			
		} catch (PersistenceException ex) {
			ex.printStackTrace();
			throw new ErroLoginException("Usuário ou senha inválidos.");
		}
		
	}
	
	@Override
	public void alterarSenha(Usuario usuario, String senhaNova)
			throws ErroLoginException {
		
		Usuario user = this.loginUsuario(usuario);
		user.setSenha(senhaNova);
		this.update(user);
		
	}

	@Override
	public Usuario getUsuarioByEmail(String email) {
		String sql = "SELECT u FROM Usuario u WHERE u.email = :email";
		Query query = em.createQuery(sql);
		query.setParameter("email", email);
		Usuario usuario = (Usuario) query.getSingleResult();
		return usuario;
	}
	
}
